# Jest no Vue
O Vue-Tests-Utils é uma coleção de ferramentas do Vue para testes.
Ele possui disponível os seguintes comandos:
# unit testing
vue add @vue/unit-jest
# or:
vue add @vue/unit-mocha
# end-to-end
vue add @vue/e2e-cypress
# or:
vue add @vue/e2e-nightwatch
# Jest
O Jest é um poderoso Framework de Testes em JavaScript com um foco na simplicidade. Pelo VueCLI o Jest já vem configurado, assim sendo temos que apenas escrever os testes!
# Adicionando no Projeto
Vamos utilizar o comando:
vue add @vue/unit-jest
Os arquivos gerados são:
jest.config.js
É na onde está o nosso preset do JestVue
./tests
É a onde ficará nossos testes do Jest
./tests/unit/example.spec.js
Todo arquivo de teste possui spec.js, para o Jest entender quais são os arquivos de testes.
import { shallowMount } from '@vue/test-utils';
import HelloWorld from '@/components/HelloWorld.vue';
describe('HelloWorld.vue', () => {
it('renders props.msg when passed', () => {
const msg = 'new message';
const wrapper = shallowMount(HelloWorld, {
propsData: { msg },
});
expect(wrapper.text()).toMatch(msg);
});
});
Esse teste gerado é o default, no caso ele monta o componente que deletamos no ínicio do nosso projeto, o HelloWorld*, passa uma propriedade por padrão, no caso msg, e espera(expect) encontrar esse texto no componente.
- No nosso curso, iremos apenas mostrar como realizar testes no Vue, e não todo o conceito envolvido.Se quiser ler mais sobre, clique aqui.
# Criando testes
Primeiramente vamos renomear nosso arquivo para Home.spec.js
e substituir seu conteúdo para:
import Vue from 'vue';
import Vuetify from 'vuetify';
import { shallowMount, createLocalVue } from '@vue/test-utils';
import Home from '@/pages/Home.vue';
Vue.use(Vuetify); // Dessa forma, o nosso localVue irá conter o Vuetify
describe('Home', () => {
const localVue = createLocalVue();
const wrapper = shallowMount(Home, {
localVue,
});
it('home existe', () => {
expect(wrapper.isVueInstance()).toBe(true);
});
});
Para rodar os testes, utiliza o comando
yarn test:unit
Criando o localVue podemos anexar as outras bibliotecas de nossa aplicação nos testes.
Nesse caso, temos um teste simples se o componente é uma instância Vue.
Sempre que o seu componente tiver bibliotecas externas, (Vue i18n, por exemplo), pesquise sobre como realizer os mocks.
Você támbem pode fazer um setup.js com as configurações dos testes.
É possível procurar as classes css com o jest, não dependendo do nome do componente.
Vamos fazer outros testes agora, um pouco mais elaborados:
# Header pertence ao componente
it('header.vue está no componente', () => {
expect(wrapper.find('.header-stub').exists());
});
Todo componente que está dentro de outro nos testes sem ser montado possui o final -stub.
Nesse teste, estamos apenas verificando se o Header é um componente de Home
# Texto do Vue4Noobs
it('Vue4Noobs está sendo exibido', () => {
const noobs = wrapper.find('p').text();
expect(noobs).toBe('Vue4Noobs');
});
- Estamos esperando que o conteúdo da tag p seja Vue4Noobs.
Na próxima seção, iremos mostrar como utilizar o Cypress no Vue, nos vemos lá!